home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 41
/
Aminet 41 (2001)(Schatztruhe)[!][Feb 2001].iso
/
Aminet
/
gfx
/
edit
/
AmiCAD_2.07.lha
/
AmiCAD
/
ARexx
/
Aligner.AmiCAD
< prev
next >
Wrap
Text File
|
2000-11-11
|
3KB
|
86 lines
/* Alignement des éléments sélectionnés */
/* Version 1.0: 23 mai 1998
Version 1.01: 13 avril 2000 (modif SAVEALL, ajout nom script en cas d'erreur)
Version 1.02: 3 novembre 2000 (localisation anglais/français)
$VER: Aligner.AmiCAD 1.02 (© R.Florac, 3 novembre 2000) */
/* Ne gère correctement que les éléments du même type */
options results /* indispensable pour récupérer le résultat des macros */
signal on error /* pour l'interception des erreurs */
signal on syntax
'LANGUAGE'
if result='français.language' then fr=1
else fr=0
'NEXTSEL(FIRSTSEL)'
if result=0 then do
if fr=1 then 'MESSAGE("Sélectionnez au moins"+CHR(10)+"deux éléments avant"+CHR(10)+"d''appeler ce script")'
else 'MESSAGE("Select two objects"+CHR(10)+"or more before"+CHR(10)+"calling this script")'
exit
end
if fr=1 then 'ALIGNEMENT=SELECT("Alignement"+CHR(10)+"En haut"+CHR(10)+"En bas"+CHR(10)+"À gauche"+CHR(10)+"À droite")'
else 'ALIGNEMENT=SELECT("Alignement"+CHR(10)+"Top"+CHR(10)+"Bottom"+CHR(10)+"Left"+CHR(10)+"Right")'
alignement=result
select
when alignement=1 then ligne_base=50000
when alignement=2 then ligne_base=0
when alignement=3 then colonne_base=50000
when alignement=4 then colonne_base=0
otherwise exit
end
objets=0
'FIRSTSEL'; i=result
do while i>0
objets=objets+1
'LINE('i')'; ligne=result
'COL('i')'; colonne=result
'WIDTH('i')'; largeur=result
select
when alignement = 1 then do
if ligne<ligne_base then ligne_base=ligne
end
when alignement = 2 then do
if ligne>ligne_base then ligne_base=ligne
end
when alignement = 3 then do
if colonne<colonne_base then colonne_base=colonne
end
otherwise do
if colonne+largeur>colonne_base then colonne_base=colonne+largeur
end
end
'NEXTSEL('i')'; i=result
end
if objets<2 then do
if fr=1 then 'MESSAGE("Sélectionnez au moins"+CHR(10)+"deux éléments avant"+CHR(10)+"d''appeler ce script")'
else 'MESSAGE("Select two objects"+CHR(10)+"or more before"+CHR(10)+"calling this script")'
exit
end
'CD='colonne_base':O=FIRSTSEL'; i=result
if alignement=4 then do
'SAVEALL:O=FIRSTSEL:WHILE(O,MOVE(O,CD-COL(O)-WIDTH(O),0):O=NEXTSEL(O))'
exit
end
'SAVEALL:O=FIRSTSEL:WHILE(O,IF(ALIGNEMENT<3,MOVE(O,0,'ligne_base'-LINE(O)),MOVE(O,'colonne_base'-COL(O),0)):O=NEXTSEL(O))'
exit
/* Traitement des erreurs, interruption du programme */
syntax:
erreur=RC
if fr=1 then 'MESSAGE("Script Aligner.AmiCAD"+CHR(10)+"Erreur de syntaxe"+CHR(10)+"en ligne 'SIGL'"+CHR(10)+"'errortext(erreur)'")'
else 'MESSAGE("Script Aligner.AmiCAD"+CHR(10)+"Syntax error"+CHR(10)+"in line 'SIGL'"+CHR(10)+"'errortext(erreur)'")'
exit
error:
if fr=1 then 'MESSAGE("Script Aligner.AmiCAD"+CHR(10)+"Erreur en ligne 'SIGL'")'
else 'MESSAGE("Script Aligner.AmiCAD"+CHR(10)+"Error in line 'SIGL'")'
exit